package com.hui.auth.service;

import com.hui.auth.entity.AuthPermission;

import java.util.List;
import java.util.Map;

/**
 * 权限服务
 * Created by LiaoYunHui on 2017/9/11.
 */
public interface AuthPermissionService {

    /**
     * 新增权限
     *
     * @param perm
     * @return
     */
    boolean insert(AuthPermission perm);

    /**
     * 查询所有权限
     *
     * @return
     */
    List<AuthPermission> selectList(Map params);

    /**
     * 查询使用中的权限
     *
     * @return
     */
    List<AuthPermission> selectActive();

    /**
     * 通过ID修改权限
     *
     * @param perm
     * @return
     */
    Integer update(AuthPermission perm);

    /**
     * 删除用户（真删除）
     *
     * @param id
     * @return
     */
    boolean delete(Long id);

    /**
     * 根据角色ID查询权限
     *
     * @param id
     * @return
     */
    List<AuthPermission> selectByRid(Long id);

    /**
     * 根据菜单ID查询权限
     *
     * @param mid
     * @return
     */
    List<AuthPermission> selectByMid(Long mid);

    /**
     * 查询菜单所包含权限
     *
     * @param mid
     * @return
     */
    List<Integer> selectPerms(Integer mid);

    /**
     * 根据PID批量修改权限
     *
     * @param mid
     * @param perms
     * @param mapList
     * @return
     */
    boolean updateByIds(Integer mid, List<Integer> perms, List<AuthPermission> mapList);

    /**
     * 查询没有分配的权限
     *
     * @param params
     * @return
     */
    List<AuthPermission> selectNoUse(Map params);

    /**
     * 根据RID批量修改角色权限
     *
     * @param permsData 某菜单下的所有权限数据
     * @param rid       角色ID
     * @param pids      修改后的权限信息
     * @return
     */
    boolean updateByRids(List<Integer> permsData, Integer rid, List<Integer> pids);
}
